Skip to contentMethod: calcTimeBetween(LocalDateTime, LocalDateTime)
      1: package zeit;
2: 
3: import tec.uom.se.ComparableQuantity;
4: import tec.uom.se.quantity.Quantities;
5: import tec.uom.se.quantity.time.TimeQuantities;
6: import tec.uom.se.unit.Units;
7: 
8: import javax.measure.Quantity;
9: import javax.measure.quantity.Time;
10: import java.time.LocalDate;
11: import java.time.LocalDateTime;
12: import java.time.LocalTime;
13: import java.time.Month;
14: import java.time.temporal.ChronoUnit;
15: 
16: /**
17:  * Klasse, welche Zeitutility-Operationen anbietet, die in unterschiedlichen Kontexten gebraucht werden.
18:  */
19: public final class ZeitUtils {
20: 
21:         private ZeitUtils() {
22:                 // Just Utils
23:         }
24: 
25:         /**
26:          * @param date
27:          *                 Zeitpunkt
28:          * @param time
29:          *                 Zeit in einer Einheit
30:          *
31:          * @return den Zeitpunkt addiert um die Zeit.
32:          */
33:         public static LocalDateTime addTime(final LocalDateTime date, final Quantity<Time> time) {
34:                 return date.plus(TimeQuantities.toTemporalSeconds(time).getTemporalAmount());
35:         }
36: 
37:         /**
38:          * @param von
39:          *                 Startzeitpunkt
40:          * @param bis
41:          *                 Endezeitpunkt
42:          *
43:          * @return berechnet die Dauer zwischen einem Startzeitpunkt und einem Endezeitpunkt.
44:          */
45:         public static ComparableQuantity<Time> calcTimeBetween(final LocalDateTime von, final LocalDateTime bis) {
46:                 return Quantities.getQuantity(ChronoUnit.SECONDS.between(von, bis), Units.SECOND);
47:         }
48: 
49:     /**
50:      *
51:      * @param zeitpunkt Zeitpunkt, welcher verschoben werden soll.
52:      * @return den Zeitpunkt verschoben um einen Monat.
53:      */
54:     public static LocalDateTime verschiebeZeitpunktUmEinenMonat(final LocalDateTime zeitpunkt) {
55:         return LocalDateTime.of(ZeitUtils.verschiebeDatumUmEinenMonat(zeitpunkt.toLocalDate()),
56:                                 LocalTime.of(zeitpunkt.getHour(), zeitpunkt.getMinute()));
57:     }
58:     /**
59:      *
60:      * @param datum Zeitpunkt, welcher verschoben werden soll.
61:      * @return den Zeitpunkt verschoben um einen Monat.
62:      */
63:     public static LocalDate verschiebeDatumUmEinenMonat(final LocalDate datum) {
64:         final Month newMonth = datum.getMonth().plus(1);
65:         int newOrOldYear = datum.getYear();
66:         if (newMonth.equals(Month.JANUARY)) {
67:             newOrOldYear++;
68:         }
69:         return LocalDate.of(newOrOldYear,
70:                 newMonth,
71:                 datum.getDayOfMonth());
72:     }
73: 
74: }